package cn.hss.object.dt;

/**
 * @author 作者：HeShaoShuai
 * @Email 邮箱：2569819541@qq.com
 * @Date 日期：2023/4/25 17:19
 * @Package 包名：cn.hss.object.dt
 * @Project 项目名：JavaSE
 * @Version 1.0
 */
public class AnimalTest {
public static void main(String[] args) {
		//没有类型转换时，假如创建一个Dog对象
		Dog dog = new Dog();//dog的编译阶段和运行时类型都是Dog
		//向上转型
		//animal的编译时类型是Animal，运行时是Dog
		Animal animal=new Dog();
		//animal.eat();//此时调用的是子类重写父类的eat方法
		//System.out.println(animal.getName());
		// animal.run();//父类独有的方法
		//向下转型
		Dog dog1=(Dog)animal;
		dog1.eat();//重写父类的方法
		dog1.run2();//子类独有的方法
		dog1.run();//父类独有的方法
		//向下转换
		if(animal instanceof Cat){
		Cat cat=(Cat)animal;
		cat.eat();//重写父类的方法
		cat.run1();//子类独有的方法
		cat.run();//父类独有的方法
		}else{
		System.out.println("类型不匹配");
		}

		}
		}